package com.community.consumer.service;

import com.community.common.entity.*;
import com.community.common.result.Result;
import com.community.consumer.entity.resp.GroupGoodResponse;
import com.community.consumer.entity.resp.GroupGoodSkuResoponse;
import com.community.consumer.entity.resp.GroupRecordListResponse;

import java.util.List;

public interface ConsumerService {

    /**
     * 查找可拼团的商品
     * @return
     */
    List<GroupGoodResponse> findGroupGoodList();


    /**
     * 查找所有可拼团商品的sku
     * @return
     */
    List<GroupGoodSkuResoponse> findGroupSkuList();


    /**
     * 添加订单
     * @param order
     * @return
     */
    int addOrder(Order order);

    /**
     * 添加订单
     * @param orderMore
     * @return
     */
    int addOrderMore(OrderMore orderMore);

    /**
     * 查找订单总价
     * @param orderNum
     * @return
     */
    Double findOrderMoreAllPrice(String orderNum);

    /**
     * 保存订单流水
     * @param orderSerial
     */
    void saveOrderSerial(OrderSerial orderSerial);

    /**
     * 查询订单编号
     * @param outTradeNo
     * @return
     */
    OrderSerial findOrderSerial(String outTradeNo);

    /**
     * 修改订单流水状态
     * @param outTradeNo
     * @param i
     */
    void updateOrderSerial(String outTradeNo, int i);

    /**
     * 查询订单
     * @param orderNum
     * @return
     */
    Order selectOne(String orderNum);

    /**
     * 修改订单状态
     * @param order
     */
    void updateOrderSuccess(Order order);


    /**
     * 添加拼团记录
     * @param groupRecord
     */
    int addOrderRecord(GroupRecord groupRecord);

    /**
     * 拼团状态
     * @param groupId
     * @return
     */
    int findGroupGood(Integer groupId);

    /**
     * 查找是否创建过此商品的订单
     * @param order
     */
    int findGroupOrderSameUser(Order order);

    /**
     * 修改拼团记录状态
     * @param order
     */
    int updateGroupStatus(Order order);

    /**
     * 查找支付成功的拼团记录
     * @param groupId
     * @return
     */
    int findGroupRecordCount(Integer groupId);

    /**
     * 查找拼团记录
     * @param groupId
     * @return
     */
    Result<List<GroupRecordListResponse>> findGroupRecord(String groupId);

    /**
     * 查找用户订单
     * @param id
     * @param groupId
     * @return
     */
    Order findUserOrder(Integer id, Integer groupId,Integer flag);

    /**
     * 查找是否参加过此活动
     * @param id
     * @param groupId
     * @return
     */
    GroupRecord findIsJoinGroup(Integer id, String groupId);

    /**
     * 查找拼团商品
     * @param groupId
     * @return
     */
    GroupGoodResponse findGroupGoodOne(String groupId);

    /**
     * 修改拼团详情商品数量
     * @param orderNum
     */
    void updateGroupSkuNum(String orderNum);
}

